<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>

        // 1.js动态弱类型语言
        // js是动态类型语言(python也是)，动态类型语言可以节约成本，适用于初创的公司；当公司大了后，使用静态类型语言开发，代码会更稳定。
        let a = 'hello';
        console.log(a);
        a = 10;
        console.log(a);
        // js是弱类型语言(c语言也是),包含很多隐式类型转换

        // java/go 是静态强类型语言
        // python是动态强类型语言
        // js/php是动态弱类型
        // C语言是静态弱类型语言
        // C++则是静态类型的语言，强弱类型居中
        let c = 1;
        let d = 1;
        console.log(c+d);



        // 2.js的数组:js中用[]表示数组,数组类型不要求统一，底层使用键值对的方式
        // let arr = new Array();
        let arr2 = [1,"lihua",true,'15'];
        console.log("添加前:"+arr2);// 不使用字符串的方式，因为js是动态类型的语言，所以，两次打印的结果都是数组改变到最终的情况的结果
        // for(let i in arr2){
        //     console.log(arr2[i]);
        // }
        // for(let element of arr2){
        //     console.log(element);
        // }

        arr2.splice(2,2,'sb');
        console.log("添加后:"+arr2);

        


        // 3.js的方法
        // js中不需要重载，可以传任意类型参数，而且使用函数时传参个数不限定！
        function add(x, y){
             return x + y;
        }
        console.log(add("张三", 5, 8));  // 张三5
        console.log(add(undefined, 10, 15, '李四'));  //NAN
        console.log(add(10, 30, 90));   // 40
        // js中使用方法累加
        function add(x,y){
            let sum = 0;
            for(let element of arguments){  // arguments是传入的元素的集合
                sum += element;
            }
            return sum;
        }
        console.log(add(1,2,3,4,5,6));
        
        // js中，函数可以赋值给一个变量，也可以返回一个方法(不是调用该方法取得返回值)
        let add = function(x,y){
            return x * y;
        }
        console.log(add(14, 12));



        // 4.js的作用域：先找范围内的值，如果没有，就扩大作用域找，直到最后。



        // 5.js中的对象(js不是面向对象语言，不是Java/c++中的对象),js中的对象，有属性，也有方法
        // 使用Object创建的对象，属性和方法可以随时添加
        // js中每个对象都是object对象
        let student = {
            name: '蔡徐坤',
            age: 25,
            height: 180,
            weight: 70,
            
            sing: function(){
                return console.log("鸡你太美!");
            },
            dance: function(){
                console.log("铁山靠");
            }
        }
        console.log(student.name);
        console.log(student.age);
        student.sing();
        student.dance();

        let teacher = new Object();
        teacher.name = "坤坤";
        teacher.sing2 = function(){
            console.log("鸡你太美");
        }
        console.log(teacher.name);
        teacher.sing2();
    </script>
</body>
</html>